package com.youlu.campus.web.community.service;

import com.youlu.campus.base.base.PageQueryRequest;
import com.youlu.campus.web.community.dto.*;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 动态互动相关接口
 * @author: YangJ
 * @date: 2020/11/26 20:30
 */
public interface InteractiveService {
    /**
     * 发表评论(一级评论)
     *
     * @param request
     * @return
     */
    boolean firstComment(CommentFirstRequest request);

    /**
     * 发表评论(二级评论)
     *
     * @param request
     * @return
     */
    boolean secondComment(CommentSecondRequest request);

    /**
     * 评论列表
     *
     * @param request
     * @return
     */
    Page<CommentResponse> commentList(CommentQueryRequest request);

    /**
     * 点赞
     *
     * @param request
     * @return
     */
    boolean like(ContentLikeRequest request);

    /**
     * 取消点赞
     *
     * @param request
     * @return
     */
    boolean unlike(ContentLikeRequest request);

    /**
     * 查询是否点赞该信息
     * @param infoId
     * @return
     */
    boolean queryIsLike(String infoId,String type);

    /**
     * 查询点赞用户头像
     * @param infoId
     * @param type
     * @return
     */
    List<String> queryLikeUser(String infoId,String type);

    /**
     * 分享
     *
     * @param request
     * @return
     */
    boolean share(ContentShareRequest request);

    /**
     * 关注用户
     *
     * @param request
     * @return
     */
    boolean followUser(FollowUserRequest request);

    /**
     * 查询是否关注该用户
     *
     * @param userId
     * @return
     */
    boolean queryIsFollow(String userId);

    /**
     * 取消关注用户
     *
     * @param userId
     * @return
     */
    boolean unFollowUser(String userId);


    /**
     * 关注/粉丝列表
     *
     * @param request
     * @return
     */
    Page<FollowResponse> followList(FollowQueryRequest request);

    /**
     * 获取当前用户互动数据信息
     *
     * @return
     */
    InteractiveResponse userInteractive(String userId);

    /**
     * 获取当前用户未读互动消息
     *
     * @return
     */
    MsgReadResponse userUnRead();

    /**
     * 获取当前用户点赞通知列表
     *
     * @param request
     * @return
     */
    Page<MsgResponse> userLikeList(PageQueryRequest request);

    /**
     * 获取当前用户评论通知列表
     * @param request
     * @return
     */
    Page<MsgResponse> userCommentList(PageQueryRequest request);

    /**
     *
     * 内容收藏
     * @param request
     * @return
     */
    boolean collect(UserCollectRequest request);

    /**
     * 查询是否收藏
     * @param infoId
     * @return
     */
    boolean isCollect(String infoId);

    /**
     * 取消收藏
     * @param infoId
     * @return
     */
    boolean unCollect(String infoId);

    /**
     * 我的收藏列表
     * @param request
     * @return
     */
    Page<UserCollectResponse> collectList(PageQueryRequest request);

    /**
     * 获取用户统计数据
     * @return
     */
    UserStatResponse userStatistics();

    /**
     * 查询评论数
     * @param contentId
     * @param type
     * @return
     */
    Long queryCommentCount(String contentId,String type);

    /**
     * 查询点赞数
     * @param contentId
     * @param type
     * @return
     */
    Long queryLikeCount(String contentId,String type);

    /**
     * 查询分享数
     * @param contentId
     * @param type
     * @return
     */
    Long queryShareCount(String contentId,String type);


    boolean testMq();
}
